perm filename ARMSS[SYS,HE] blob
sn#004211 filedate 1972-07-21 generic text, type T, neo UTF8
00100 IFN USER+TRACK,<0>
00200 STRADR: MOVE BITSAV ;Enters here every 1/60 th. seccond
00300 IFE USER+TRACK,<
00500 TRNE DTST
00600 CALLI 400024
00610 DATAO ARM,[2]
00655 SOSLE STWT
00677 CALLI 400024
00700 >
00800 MOVE P,[XWD -PDLL,PDL] ;PUSH DOWN STACK
00900 MOVE CBUF,CBUFS
01000 MOVEI DATWD,2 ;YELLOW ARM
01100 IFN REPORT+TRACK,<
01200 MOVE DATA,DATPT
01300 >
01400 IFN USER+TRACK,<
01500 TRNE DTST
01600 JRST SWDONE
01700 >
01800 IFE USER,<
01900 IFN TRACK,<
02000 SKIPE WALK
02100 JRST NCHK
02200 >
02300 CONSZ 40 ;CHECK TO SEE IF ON PDP-6
02400 JRST[ MOVEI TAC,PDPERR
02500 MOVEM TAC,TRAJER
02600 JRST TOFF]
02700 ; CONO 4,400 ;TURN OFF THE PI'S
02800 CONI 0,AC ;SET PROCESSOR FLAGS
02900 ANDI AC,7
03000 CONO 0,2050(AC)
03100 TRZE TRIP ;TURN ON ARM
03200 DATAO ARM,[3]
03300 >
03400 NCHK:
03700 MOVEI K,51B23 ;-10 VOLT REFERENCE
03800 IFE USER,<PUSHJ P,PREAD ;REFTR← -10 volt reference
03900 LDB AC,SNUM ;PICK UP MIDDLE SAMPLE
04000 ANDI DACVAL,7777 ;LEAVE LAST SAMPLE IN J
04100 ADDI AC,(DACVAL) ;ADD THEM TOGETHER
04200 >
04300 IFN USER,<MOVEI AC,17770>
04400 CAIGE AC,17000 ;IS THE FUSE BLOWN
04500 JRST[ MOVEI TAC,REFERR
04600 MOVEM TAC,TRAJER
04700 JRST TOFF]
04800 MOVEM AC,REFTR ;REFERENCE READING
04900 MOVEI K,710000
05000 IFE USER,<PUSHJ P,PREAD>
05100 LDB AC,SNUM
05200 ANDI DACVAL,7777
05300 ADDI AC,(DACVAL)
05400 MOVEM AC,VZ
05500 IFN TRACK,<
05600 SKIPE WALK
05700 JRST TOK
05800 >
05900 IFE USER,<
06000 CONI CLOCK,AC
06100 TLZ AC,777774
06200 JRST STIME ;TIME IN MICRO SECONDS
06300 >
06400 IFN USER,<JRST .+2>
00100 NXTJIF:
00200 IFN USER,<JRST SWDONE>
00300 IFN DEB<
00400 MOVEM 17,ACSAV+17
00500 MOVEI 17,ACSAV
00600 BLT 17,ACSAV+16
00700 MOVE 17,ACSAV+17
00800 >
00900 IFN TRACK,<
01000 SKIPE WALK
01100 JRST TOK
01200 >
01300 IFN REPORT+TRACK,<
01400 HRRZI TAC,(DATA)
01500 CAIL TAC,DATO+DBL-1
01600 JRST[ SUB DATA,[XWD DBL,DBL]
01700 MOVE TAC,[XWD DATO+DBL,DATO]
01800 BLT TAC,(DATA)
01900 HRRZI AC,(DATA)
02000 HRRZ TAC,DATIWD
02100 SUBI AC,(TAC)
02200 JRST RDP]
02300 HRRZI AC,(DATA)
02400 HRRZ TAC,DATIWD
02500 SUBI AC,(TAC)
02600 HRRZ MQ,DATPT
02700 SUBI TAC,(MQ)
02800 IMUL AC,TAC
02900 RDP: SKIPLE AC
03000 IFN TRACK,<PUSH DATA,[0]>
03100 IFN REPORT,<PUSH DATA,[SIXBIT/ERROR/]>
03200 MOVEI AC,DATO-1
03300 HRRZ TAC,DATIWD
03400 CAIL TAC,DATO+DBL-1
03500 HRRM AC,DATIWD
03600 MOVEM DATA,DATPT
03700 >
03800 IFE USER,<
03900 MOVEI TAC,=1000
00100 WATSTL: CONI CLOCK,AC
00200 TLZ AC,777774
00300 SUB AC,LTIME
00400 JUMPGE AC,.+2
00500 ADD AC,[=1000000]
00600 IFN REPORT,<
00700 CAIN TAC,=1000
00800 JRST[ PUSH DATA,[<SIXBIT/TICK/>+1]
00900 PUSH DATA,AC
01000 JRST .+1]
01100 >
01200 CAIGE AC,=16667 ;delta T greater than 16.7 msec.?
01300 SOJGE TAC,WATSTL
01400 JUMPL TAC,TE
01500 CAIL AC,=19000
01600 JRST[ MOVEI TAC,ISERR
01700 MOVEM TAC,TRAJER
01800 JRST TOFF]
01900 MOVE AC,LTIME
02000 ADDI AC,=16667
02100 TLNE AC,777774
02200 SUB AC,[=1000000]
02300 STIME: MOVEM AC,LTIME ;LTIME←LTIME+16.7 msec.
02400 >
02500 AOS AC,COUNT
02600 CAIG AC,=1000
02700 JRST TOK
02800 TE: MOVEI AC,TERR
02900 MOVEM AC,TRAJER
03000 JRST TOFF
03100 TOK:
03200 IFN ADJUST,<
03300 MOVEI K,14B23
03400 MOVEM BITSAV
03500 MOVEI I,2
03600 RNP: PUSHJ P,PREAD
03700 LDB AC,SNUM
03800 FSC AC,221
03900 JSA 16,EXP
04000 JUMP AC
04100 FMPR [0.15]
04200 MOVEM FACTOR(I)
04300 SOJGE I,RNP
04400 MOVE BITSAV
04500 MOVE I,ADJI
04600 JUMPL I,MAIN
04700 IFN ADJG,<
04800 MOVE AC,ADJE
04900 FMPR AC,FACTOR
05000 MOVEM AC,KE(I) ;POT 12
05100 MOVE AC,ADJV
05200 FMPR AC,FACTOR+1
05300 MOVEM AC,KV(I) ;POT 13
05400 MOVE AC,ADJIF
05500 FMPR AC,FACTOR+2
05600 MOVEM AC,KI(I) ;POT 14
05700 >
05800 IFN ADJD,<
05900 MOVE AC,ADJE
06000 FMPR AC,FACTOR
06100 MOVEM AC,KM(I) ;POT 12
06200 MOVE AC,ADJV
06300 FMPR AC,FACTOR+1
06400 MOVEM AC,PK(I) ;POT 13
06500 >
06600 >
00100 MAIN: PUSHJ P,ANGLES ;read joint angles
00200 TRNE RONLY ;read angles only?
00300 JRST[ PUSHJ P,HEAD ;read hand also
00400 MOVE AC,HAND
00500 MOVEM AC,SET
00600 PUSHJ P,READED] ;DOES NOT RETURN
00700 TRNN RUN
00800 JRST[ SKIPGE TAC,FUNCT ;not run, mabye a function
00900 JRST NEXT
01000 JUMPE TAC,[CAIL CBUF,BUF;try next buffer
01100 SETOM (CBUF) ;dont do this if first buffer
01200 MOVEM CBUF,CBUFS
01300 ADDI CBUF,1001
01400 CAILE CBUF,BUF2
01500 MOVEI CBUF,BUF ;Advance buffer
01600 MOVE 2,(CBUF)
01700 JUMPL 2,[BUFWT:MOVE CBUF,CBUFS;wait for buffer
01800 JRST SWDONE]
01900 JUMPN 2,BUFRDY ;the last buffer stop.
02000 JRST[ TRO DTST
02100 IFN REPORT,<PUSH DATA,[0]>
02200 JRST BUFWT]
02300 BUFRDY: HRRZ 2,(CBUF)
02400 ADDI 2,-1(CBUF)
02500 HRRZM 2,STKPTR
02600 SETZM COUNT
02700 JRST NEXT]
02800 JRST TT] ;otherwise perform function
02900 MOVEI J,6
03000 PUSHJ P,SERVO ;computes feedback and integral term
03100 JUMPE J,[RUDONE:TRZ DROP+RUN+FINAL ;if J is zero then end of run
03200 PUSHJ P,SETSET
03500 JRST NEXT]
03600 PUSHJ P,DRIVE ;Drive motors
03700 PUSHJ P,EVAL ;Compute TFF and TDD
03800 PUSHJ P,NXTH ;Compute next T0
00100 TT: PUSHJ P,REFLEX
00200 DISP: MOVE AC,FUNCT
00300 CAILE AC,MAXFN
00400 JRST NEXT
00500 JRST @.+1(AC) ;Perform function
00600 NXTJIF ;0
00700 HOPEN ;1
00800 HCLOSE ;2
00900 NXTJIF ;3
01000 PLACE ;4
01100 NUDGE ;5
01200 SETCH ;6
01300 STOP ;7
01310 SAVE ;10
01320 RESTORE ;11
01400
01500 XLIST
01600 SUBTTL SPACEWAR CODE ANGLE MEASUREMENT LOU PAUL
01700 LIST
00100 ANGLES: MOVEI I,5
00200 MOVEI L,10
00300 IFN REPORT,<PUSH DATA,[<SIXBIT/THETA/>+6]>
00400 SETCHA: MOVEI K,CHA
00500 TRNE ALT6
00600 MOVEI K,N6CHA
00700 RSTRT: SOJL L,REDER
00800 IFE USER,<
00900 PUSHJ P,PREAD
01000 LDB AC,SNUM
01100 CAIN I,5
01200 JRST[ TRNE POTREAD
01300 JRST .+1
01400 CAIL AC,1000
01500 CAILE AC,7000
01600 JRST[ TRC ALT6
01700 JRST SETCHA]
01800 MOVEI K,CHA5
01900 JRST .+1]
02000 ANDI DACVAL,7777
02100 ADDI AC,(DACVAL)
02200 SETZ TAC,
02300 DIV AC,REFTR
02400 ASH AC,-26
02500 MOVE J,AC
02600 TRNE POTREAD
02700 JRST[ ADDI J,=1000
02800 JRST EXON]
02900 ASHC AC,-11 ;LEAVE INDEX INTO NON-LINEAR DIFF TABLE IN AC
03000 LDB MQ,NON(I) ;GET LOWER DIFF
03100 ADDI J,(MQ) ;ADD IT TO READING
03200 AOJ AC,
03300 LDB AC,NON(I) ;GET UPPER DIFFERENCE
03400 SUBI AC,(MQ)
03500 MUL TAC,AC ;INTERPOLATE
03600 ADD J,TAC ;CORRECTED READING
03700 ; COMPUTE TD
03800 MOVEI TAC,(J)
03900 EXCH TAC,OPOT(I)
04000 SUB TAC,OPOT(I)
04100 MOVM AC,TAC
04200 CAIG AC,2
04300 SETZ TAC,
04400 FSC TAC,226
04500 FMPR TAC,SCALE(I)
04600 CAIG AC,4000 ;IN CASE JOINT 6 ALT SWITCH HAS OCCURED
04700 MOVNM TAC,TD(I)
04800
04900 FSC J,226 ;FLOAT
05000 FMPR J,SCALE(I)
05100 FADR J,OFF(I)
05200 >
05300 IFN USER,<
05400 MOVE J,ERR(I)
05500 FSC J,-1
05600 FADR J,T0(I)
05700 >
05800 CAIN I,5
05900 JRST[ TRNE ALT6
06000 FADR J,OFF6
06100 FADR J,ROT6
06200 MOVEM J,TH+5
06300 FSBR J,T0+5
06400 MOVSI MQ,(180.0)
06500 CAML J,MQ
06600 JRST[ INCROT: MOVN MQ,MQ
06700 FSC MQ,1
06800 FADRM MQ,ROT6
06900 FADRM MQ,TH+5
07000 JRST THS]
07100 MOVN MQ,MQ
07200 CAMG J,MQ
07300 JRST INCROT
07400 JRST THS]
07500 EXON: MOVEM J,TH(I) ;THETA
07600 THS:
07700 IFN REPORT,<
07800 MOVE MQ,TH(I)
07900 FSBR MQ,T0(I)
08000 PUSH DATA,MQ
08100 >
08200 NXCHA: SOJGE I,RSTRT ; IF LAST TIME THROUGH
08300 MOVEI K,710000
08400 IFE USER,<
08500 PUSHJ P,PREAD
08600 LDB AC,SNUM
08700 ANDI DACVAL,7777
08800 ADDI AC,(DACVAL)
08900 SUB AC,VZ
08910 MOVM TAC,AC
08920 CAIG TAC,2
08930 SETZ AC,
09000 FSC AC,216
09100 FMPR AC,VSCALE
09200 MOVEM AC,TD+2
09300 >
09400 IFN USER,<SETZM TD+2>
09500 POPJ P,
09600
09700 XLIST
09800 SUBTTL SPACEWAR CODE SERVO CALC. LOU PAUL
09900 LIST
00100 SERVO: MOVEI I,5
00200 SETZM ASTP
00300 SERVL:
00400 TRNE FINAL
00500 JRST NULL ;MODIFY THETA BY INTEGRAL TERM
00600 MOVN AC,T0(I)
00700 FSC AC,1
00800 FADR AC,TF(I)
00900 FADR AC,T0P(I)
01000 MODT0: HRRZ TAC,BMASK(I)
01100 TDNN TAC,FBI
01200 JRST [ MOVE TAC,ERR(I)
01300 MOVE MQ,DMASK(I)
01400 TDNE MQ,FBI
01500 MOVN TAC,TAC
01600 MOVEM TAC,ET0(I)
01700 JRST NOBACK]
01800 MOVE TAC,TH(I)
01900 FSBR TAC,T0(I) ;POSITION ERROR
02000 MOVEM TAC,ET0(I)
02100 MOVE TAC,T0P(I)
02200 FSBR TAC,T0(I)
02300 FADR TAC,TD(I)
02400 MOVEM TAC,VERR(I)
02500
02600 MOVN TAC,ET0(I)
02700 FMPR TAC,KE(I) ;ERROR GAIN
02800 FADR AC,TAC
02900 MOVN TAC,VERR(I)
03000 FMPR TAC,KV(I) ;VELOCITY GAIN
03100 FADR AC,TAC
03200 MOVE TAC,ERRINT(I)
03300 FMPR TAC,KI(I)
03400 FADR AC,TAC
03500
03600 NOBACK: CAIE I,2
03700 FMPR AC,[IRAD:0.0174532925] ;JOINT 3 IS IN INCHES
03800 FMPR AC,CII(I) ;JOINT INERTIA
03900 TRNE STP
04000 JRST[ MOVE MQ,AC
04100 FDVR MQ,F0(I)
04200 FMPR MQ,STQ(I)
04300 FADRM MQ,ASTP
04400 JRST .+1]
04500 FADR AC,CI(I) ;GRAVITY TERM
04600 MOVEM AC,T(I) ;ERROR CORRECTION TORQUE
04700 NXTACC:
04800 SOJGE I,SERVL
04900 TRNE STP
05000 JRST[ SOSL HCNT
05100 JRST .+1
05200 MOVE AC,ASTP
05300 CAML AC,SDTQ
05400 JRST[ TRZ STP
05500 PUSHJ P,SETSET
05600 JRST RUDONE]
05700 JRST .+1]
05800 IFN DYNAMICS,<
05900 HRRI TAC,1(DATA)
06000 HRLI TAC,DDAT
06100 HRRZI AC,15(TAC)
06200 BLT TAC,(AC)
06300 ADD DATA,[XWD 16,16]
06400 >
06500 POPJ P,
06600
06700 NULL: SETZ AC,
06800 TRZE STP
06900 JRST[ MOVEI TAC,STPERR
07000 MOVEM TAC,TRAJER
07100 POP P,TAC
07200 JRST TOFF]
07250 MOVE TAC,FBI
07300 TDNN TAC,GMASK(I)
07400 JRST SO
07500 MOVE TAC,T0(I)
07600 FSBR TAC,TH(I) ;-POSITION ERROR
07700 FADRM TAC,ERRINT(I)
07800 MOVM MQ,TAC ;|POSITION ERROR|
07900 TRNN DROP
08000 SKIPE TP(I) ;STILL IN TRAJECTORY
08100 JRST MODT0
08200 CAML MQ,ERR(I) ;COMPARE POSITION ERROR
08300 JRST MODT0
08400 MOVM MQ,TD(I)
08500 CAML MQ,ERR(I) ;COMPARE VELOCITY ERROR
08600 JRST MODT0
08700 SO: TDZ DATWD,BMASK(I)
08800 IFN REPORT+TRACK+USER+DEB,<SETZM MOTOR(I)>
08900 DATAO ARM,DATWD
08910 HRLZ MQ,I
08920 TRC MQ,400000
08930 DATAO WIDTH,MQ
09000 SOJA J,MODT0
09100 XLIST
09200 SUBTTL SPACEWAR CODE DRIVE CALC. LOU PAUL
09300 LIST
00100 DRIVE: JFCL 10,.+1
00200 MOVEI I,5 ;Loop once for each joint
00300 IFN REPORT,<PUSH DATA,[<SIXBIT/DAC/>+6]>
00400 TRZ DATWD,504000
00500 TRO DATWD,021200 ;INITIAL SIGN BITS FOR POSITIVE ROTATION
00600 LS0: TDNN DATWD,BMASK(I)
00700 JRST ISP
00800 MOVE MQ,TD(I)
00900 JUMPN MQ,.+2
01000 MOVN MQ,ET0(I)
01100 FMPR MQ,T(I)
01200 JUMPL MQ,[ MOVM MQ,T(I)
01300 FSBR MQ,F0(I)
01400 JUMPL MQ,[ FDVR MQ,F0(I)
01500 FMPR MQ,V0(I)
01600 FSC MQ,1
01700 FADR MQ,V0(I)
01800 SKIPGE T(I)
01900 MOVN MQ,MQ
02000 JRST CEMF]
02100 MOVSI AC,(1.0)
02200 FSBR AC,PK(I)
02300 FMPR MQ,AC
02400 FMPR MQ,KM(I)
02500 FADR MQ,V0(I)
02600 SKIPG T(I)
02700 MOVN MQ,MQ
02800 JRST CEMF]
02900 SKIPN T(I)
03000 JRST[ SKIPN TD(I)
03100 JRST CEMF
03200 MOVE MQ,V0(I)
03300 SKIPGE TD(I)
03400 MOVN MQ,MQ
03500 JRST CEMF]
03600 JUMPE MQ,NOEX
03700 MOVE MQ,V0(I)
03800 SKIPGE T(I)
03900 MOVN MQ,MQ
04000 NOEX: MOVSI AC,(1.0)
04100 FADR AC,PK(I)
04200 FMPR AC,T(I)
04300 FMPR AC,KM(I)
04400 FADR MQ,AC
04500 CEMF:
04600 MOVE AC,EMF(I)
04700 FMPR AC,TD(I)
04800 MOVSI J,(30.0)
04900 JUMPGE MQ,DRVLT
05000 MOVN AC,AC
05100 DRVLT: FSBR J,AC ;Available drive voltage
05200 CAMGE J,[1.0]
05300 JRST MAXDRV
05400 VELOK: MOVM AC,MQ
05500 FDVR AC,J ;AC= REL TIME ON
05600 FIX AC,211000 ;1=16
05700 CAML AC,[4000000]
05800 JRST DHO ;too much force stop the arm
05900 CAILE AC,776000
06000 MAXDRV: MOVEI AC,776000
06100 IFN REPORT+TRACK+USER+DEB,<
06200 MOVEM AC,MOTOR(I)
06300 SKIPGE MQ
06400 MOVNS MOTOR(I)
06500 >
06600 TRC AC,400000
06700 HRL AC,I
06800 SETDRV:
06900 IFN TRACK,<SKIPN WALK>
07000 DATAO WIDTH,AC
07100 JUMPGE MQ,ISP
07200 TDC DATWD,DMASK(I)
07300 ISP:
07400 IFN REPORT,<PUSH DATA,MOTOR(I)>
07500 SOJGE I,LS0
07600 JFCL 10,DHO
07700 IFN TRACK,<SKIPN WALK>
07800 DATAO ARM,DATWD
07900 POPJ P,
08000
08100 XLIST
08200 SUBTTL SPACEWAR CODE LOU PAUL
08300 LIST
00100 NXTH: MOVE AC,[XWD T0,T0P]
00200 BLT AC,T0+5
00300 TRNE DROP
00400 JRST[ MOVEI I,5
00500 OL: MOVE AC,DELTH(I)
00600 FADRM AC,DTH(I)
00700 SOJGE I,OL
00800 JRST JALS]
00900 NTH:
01000 TRNE INCREM
01100 JRST[ AOS MQ,TICKS
01200 CAML MQ,NTICKS
01300 JRST[ TRZ INCREM
01400 SKIPN TP
01500 TRO FINAL
01600 MOVEI I,5
01700 FIL: MOVE AC,DELTH(I)
01800 FADRB AC,DTH(I)
01900 FADR AC,TFF(I)
02000 MOVEM AC,TF(I)
02100 SETZM DELTH(I)
02200 SOJGE I,FIL
02300 POPJ P,]
02400 SETZ I,
02500 DIV MQ,NTICKS
02600 ASH MQ,-10
02700 FSC MQ,200
02705 MOVSI AC,(6.0)
02710 FMPR AC,MQ
02715 FADR AC,[-15.0]
02720 FMPR AC,MQ
02725 FADR AC,[10.0]
02730 FMPR AC,MQ
02735 FMPR MQ,MQ
02740 FMPR MQ,AC
02800 MOVEI I,5
02900 LDC: MOVE AC,DELTH(I)
03000 FMPR AC,MQ
03100 FADR AC,DTH(I)
03200 FADR AC,TFF(I)
03300 MOVEM AC,TF(I)
03400 SOJGE I,LDC
03500 POPJ P,]
03600 JALS: MOVEI I,5
03700 JAL: MOVE AC,DTH(I)
03800 FADR AC,TFF(I)
03900 MOVEM AC,TF(I)
04000 SOJGE I,JAL
04100 POPJ P,
04200
00100 EVAL: MOVEI I,5
00200 EL: MOVE J,TP(I) ;POINTS TO KOE5
00300 JUMPE J,NE
00400 AOS MQ,TJ(I)
00500 CAML MQ,TN(I) ;NUMBER OF TICKS THIS SEGMENT
00600 JRST[ ;END OF SEGMENT
00700 CAIN I,5
00800 JRST[ ;JOINT 6 HAS CONTROL WORD
00900 MOVE TAC,[XWD NC,CI]
01000 BLT TAC,CI+=11 ;UPDATE C
01100 MOVE TAC,TICKS
01200 CAMGE TAC,NTICKS
01300 TRO INCREM
01400 LDB TAC,[POINT 3,1(J),2] ;LEVEL
01500 JUMPN TAC,[ ;SWITCH POINT
01600 SKIPG LOOP(TAC)
01700 JRST[ ;INITIALIZE LOOP
01800 LDB AC,[POINT 15,1(J),17]
01900 MOVEM AC,LOOP(TAC) ;COUNT
02000 JRST SETALT]
02100 SOSLE LOOP(TAC) ;IN LOOP
02200 SETALT: TRO ALT
02300 JRST GETNXT]
02400 JRST GETNXT]
02500 GETNXT: TRNE ALT
02600 JRST[ LDB J,[POINT 9,(J),8] ;ALT POINTER
02700 JRST GOT]
02800 LDB J,[POINT 9,(J),17] ;NEXT POINTER
02900 JUMPE J,[SETZM TP(I)
03000 TRO FINAL
04200 MOVE AC,A4(I)
04300 ADD AC,A3(I)
04400 ADD AC,A2(I)
04500 ADD AC,A1(I)
04600 ADD AC,A0(I)
04700 JRST ELL]
04800 GOT: ADDI J,(CBUF)
04900 MOVEM J,TP(I)
05000 SETZM TJ(I)
05100 HRRZ AC,(J)
05200 MOVEM AC,TN(I)
05300 CAIN I,5
05400 JRST[ ;INCREMENT FOR C
05500 HRRZ TAC,1(J)
05600 ADDI TAC,(CBUF)
05700 HRLI TAC,(TAC)
05800 HRRI TAC,NC
05900 BLT TAC,NC+=11
06000 FSC AC,233
06100 MOVSI MQ,(1.0)
06200 FDVR MQ,AC
06300 MOVEI K,=11
06400 DELC: MOVE AC,NC(K)
06500 FSBR AC,CI(K)
06600 FMPR AC,MQ
06700 MOVEM AC,DCI(K)
06800 SOJGE K,DELC
06900 JRST DDELC]
07000 DDELC: HLRE AC,-3(J)
07100 MOVEM AC,A4(I)
07200 HRRE AC,-3(J)
07300 MOVEM AC,A3(I)
07400 HLRE AC,-2(J)
07500 MOVEM AC,A2(I)
07600 HRRE AC,-2(J)
07700 MOVEM AC,A1(I)
07800 HLLZ AC,-1(J)
07900 MOVEM AC,SC(I)
08000 HRRE AC,-1(J)
08100 MOVEM AC,A0(I)
08200 JRST ELL]
08300 CAIN I,5
08400 JRST[ MOVEI K,=11
08500 DECC: MOVE AC,DCI(K)
08600 FADRM AC,CI(K)
08700 SOJGE K,DECC
08800 JRST .+1]
08900 DIV MQ,TN(I)
09000 MOVE AC,A4(I)
09100 MUL AC,MQ
09200 ADD AC,A3(I)
09300 MUL AC,MQ
09400 ADD AC,A2(I)
09500 MUL AC,MQ
09600 ADD AC,A1(I)
09700 MUL AC,MQ
09800 ADD AC,A0(I)
09900 ELL: XOR AC,SC(I)
10000 FSC AC,0
10100 MOVEM AC,TFF(I)
10200 CAIN I,5
10300 JRST[ MOVE AC,TFF+5
10400 FSBR AC,T0+5
10500 MOVSI MQ,(180.0)
10600 CAML AC,MQ
10700 JRST[ INCT0: FSC MQ,1
10800 FADRM MQ,T0+5
10900 FADRM MQ,TF+5
11000 JRST .+1]
11100 MOVN MQ,MQ
11200 CAMG AC,MQ
11300 JRST INCT0
11400 JRST .+1]
11500 NE: SOJGE I,EL
11600 TRZ ALT
11700 POPJ P,
11800
00100 DHO: AOJ I, ;DISASTER HAS OCCURED
00200 LSH I,3 ;JOINT NUMBER
00300 IORI I,EXER
00400 MOVEM I,TRAJER
00500 POP P,I
00600
00700 TOFF: MOVE TAC,STKPTR
00800 MOVEM TAC,ERRSTK
00900 MOVEI L,10
01000 TRNE RONLY
01100 JRST READED
01200 TRZ RUN+FINAL+DROP ;STOP THE ARM
01300 MOVNXT: AOS TAC,STKPTR
01400 MOVNX: SOJL L,[ LE:
01500 MOVEI AC,LOOPER
01600 MOVEM AC,TRAJER
01700 JRST PW]
01800 HLRE AC,@STKPTR
01900 CAIN AC,3 ;IS IT A WAIT
02000 JRST MOVNXT
02100 CAIN AC,SKPERR
02200 JRST[ HRRZ AC,(TAC)
02300 CAMN AC,TRAJER
02400 JRST[ AOS STKPTR
02500 SETZM TRAJER
02600 JRST NEXT]
02700 JRST MOVNXT]
02800 CAIN AC,JMPREL
02900 JRST[ HRRE AC,(TAC)
03000 ADDI TAC,(AC)
03100 HRRM TAC,STKPTR
03200 JRST MOVNX]
03300 PW: CAIL TAC,BUF
03400 HRRM TAC,JUMPBK
03500 MOVEI TAC,WAITIN
03600 MOVEM TAC,STKPTR
03700 MOVEI TAC,3
03800 MOVEM TAC,FUNCT
03900 IFN TRACK,<SKIPN WALK>
04000 DATAO ARM,[2] ;STOP THE ARM
04100 IFN REPORT,<PUSH DATA,[0]>
04200 READED: TRO DTST
04300 IFN DEB,<
04400 MOVEM 17,ACSAV+17
04500 MOVEI 17,ACSAV
04600 BLT 17,ACSAV+16
04700 >
04800 JRST SWDONE
04900
00100 NEXT: TRNE RUN
00200 JRST[ SETZM FUNCT
00300 JRST NXTJIF]
00400 MOVEI L,10
00500 MOVE AC,FUNCT
00600 CAIE AC,6 ;SET TOUCH
00700 JRST[ MOVE TAC,SOTCHS
00800 MOVEM TAC,SOTCH
00900 TRZ STCH
01000 JUMPE TAC,.+1
01100 TRO STCH
01200 JRST .+1]
01300 IFN TRACK,<SKIPN WALK>
01400 MOVEI DATWD,2
01500 DATAO ARM,DATWD ;STOP THE ARM
01600 INCPIC: AOS AC,STKPTR
01700 PICKUP: SOJL L,LE
01800 HLRE TAC,@STKPTR
01900 CAIN TAC,JMPABS
02000 JRST[JMPA:HRRZ TAC,@STKPTR
02100 MOVEM TAC,STKPTR
02200 JRST PICKUP]
02300 CAIN TAC,SKPERR
02400 JRST INCPIC
02500 CAIN TAC,JMPREL
02600 JRST[ HRRE TAC,(AC)
02700 ADDI TAC,(AC)
02800 HRRM TAC,STKPTR
02900 JRST PICKUP]
03000 JUMPL TAC,[TRO RUN
03100 SETCA TAC,
03200 MOVEM TAC,FUNCT
03300 AOS DOING ;INCREASE TRAJECTORY NUMBER
03400 HLRZ 2,(CBUF)
03500 MOVEM 2,NTICKS ;RUN TIME
03600 SETZM LOOP
03700 MOVE TAC,[XWD LOOP,LOOP+1]
03800 BLT TAC,TN+5
03900 MOVE DATWD,1(CBUF)
04000 HRRZM DATWD,FBI
04100 MOVEI I,5
04200 MOVEI K,35
04300 SUL: SUBI K,4
04400 HRLZM K,TJ(I)
04500 MOVEI TAC,TJ(I)
04600 MOVEM TAC,TP(I)
04700 TDNE DATWD,BMASK(I)
04800 TDO DATWD,BMASK(I)
04900 SETZM DTH(I)
05000 SOJGE I,SUL
05100
05200 HRLZI TAC,764(CBUF)
05300 HRRI TAC,NC
05400 BLT TAC,NC+=11
05500 PUSHJ P,EVAL
05600 TRZ INCREM
05700 MOVEI I,5
05800 MOVBK: MOVE AC,TH(I)
05900 MOVEM AC,T0(I)
06000 MOVEM AC,TF(I)
06100 FSBR AC,TFF(I)
06200 CAIN I,5
06300 JRST[ MOVSI MQ,(180.0)
06400 CAML AC,MQ
06500 JRST[SETROT:FSC MQ,1
06600 MOVN MQ,MQ
06700 FADRM MQ,TH+5
06800 FADRM MQ,ROT6
06900 JRST MOVBK]
07000 MOVN MQ,MQ
07100 CAMG AC,MQ
07200 JRST SETROT
07300 JRST ADDTF]
07400 ADDTF: MOVEM AC,DTH(I)
07410 MOVN AC,AC
07500 FADRM AC,DELTH(I)
07550 SETZM ERRINT(I)
07600 SETZM TD(I)
07700 SOJGE I,MOVBK
07800 PUSHJ P,EVAL
07900 PUSHJ P,NXTH
08000 SETZM TICKS
08100 TRZ FINAL
08200 HLRE TAC,@STKPTR
08300 JRST MARK]
08400 MOVEM TAC,FUNCT
08500 CAIN TAC,3 ;IS IT A WAIT
08600 JRST[ AOS TAC,STKPTR
08700 CAIL TAC,BUF
08800 HRRM TAC,JUMPBK
08900 MOVEI TAC,WAITIN
09000 MOVEM TAC,STKPTR
09100 IFN REPORT,<PUSH DATA,[0]>
09200 TRO DTST
09300 PUSHJ P,SWDONE]
09400 MARK:
09500 IFN REPORT,<
09600 PUSH DATA,[<SIXBIT/NEXT/>+1]
09700 MOVE TAC,FUNCT
09800 HRL TAC,0
09900 PUSH DATA,TAC
10000 >
10100
10200 JRST DISP
10300 SWDONE:
10400 MOVEM BITSAV
10500 MOVEM CBUF,CBUFS
10600 IFN REPORT+TRACK,<
10700 MOVEM DATA,DATPT
10800 >
10900 IFE USER,<
11000 IFN TRACK,<
11100 SKIPE WALK
11200 JRST @STRADR-1
11300 >
11400 ; CONO 4,200 ;TURN ON THE PI'S
11500 CALLI 400024
11600 >
11700 IFN USER,<
11800 JRST @STRADR-1
11900 >
12000
12100 SETSET: MOVEI I,5
12200 FDTH: MOVE AC,TH(I)
12300 MOVEM AC,T0(I)
12400 MOVEM AC,T0P(I)
12500 MOVEM AC,TF(I)
12600 FSBR AC,TFF(I)
12700 MOVEM AC,DTH(I)
12800 SETZM DELTH(I)
12900 SOJGE I,FDTH
13000 POPJ P,
13100
00100 PREAD:
00200 IFN TRACK,<
00300 SKIPE WALK
00400 JRST[GNPR:AOBJP DATA,[ MOVE AC,[IOWD DBL,DATO]
00500 MOVEM AC,DATPT
00600 MOVE DATA,DATPT
00700 SETZ TAC,
00800 INPUT 15,1
00900 JRST GNPR]
01000 MOVE DACVAL,(DATA)
01100 JRST @READFN]
01200 >
01300 MOVEI TAC,10
01400 MOVEM TAC,DATMSD
01500 DACRED: SOSGE DATMSD
01600 JRST[REDER: MOVEI TAC,READER
01700 MOVEM TAC,TRAJER
01800 JRST TOFF]
01900 DACST: CONO DB,4250
02000 CONO AD,(K)
02100 NREAD: MOVEI TAC,30
02200 CONSO DB,1000
02300 SOJGE TAC,.-1
02400 JUMPL TAC,[DACDIE:CONO AD,4000(K) ;STOP DAC
02500 TRO REREAD
02600 IFN DEB,<MOVEM DACVAL,DACERR>
02700 MOVEI TAC,12
02800 WRH: SOJGE TAC,WRH
02900 JRST DACRED]
03000 DATAI DB,DACVAL
03100 CONSZ DB,10000
03200 JRST DACDIE
03300 XOR DACVAL,SBMSK
03400 IFN TRACK,<PUSH DATA,DACVAL>
03500 JRST @READFN
03600 FREAD: ADDI K,770000
03700 IFN TRACK,<SKIPN WALK>
03800 CONO AD,4000(K) ;STOP AD ON NEXT CHANNEL
03900 POPJ P,
04000 READFN: FREAD
04100
04200 XLIST
04300 SUBTTL CONSTANTS LOU PAUL
04400 LIST
00100 NON: POINT 12,INNER(AC),11
00200 POINT 12,INNER(AC),23
00300 POINT 12,INNER(AC),35
00400 POINT 12,OUTER(AC),11
00500 POINT 12,OUTER(AC),23
00600 POINT 12,OUTER(AC),35
00700 ERR: 0.05
00800 0.05
00900 0.01
01000 0.1
01100 0.1
01200 1.0
01300 TH: BLOCK 6 ;THE NEXT 7 LOCATIONS ARE BLOCK TRANSFERED.
01400 HAND: 3.0
01500 OPOT: BLOCK 6
01600 VERR: BLOCK 6
01700 ET0: BLOCK 6
01800 ERRINT: BLOCK 6
01900 DTH: BLOCK 6
02000 TD: BLOCK 6
02100 T0P: BLOCK 6
02200 T0: -150.0
02300 -75.0
02400 14.0
02500 -90.0
02600 60.0
02700 0.0000
02800 TF: BLOCK 6
02900 TFF: BLOCK 6
03000 DELTH: BLOCK 6 ;THIS AND THE NEXT ARE BLT ED TOGETHER
03100 NTICKS: 0
03150 DTHS: BLOCK 6
03200 T: BLOCK 6
03300 IFN USER+REPORT+TRACK+DEB,<MOTOR: BLOCK 6>
03400 FBI: 0
03500 VZ: 0
03600 STQ: BLOCK 6
03700 SDTQ: 0
03800 ASTP: 0
03900 DCI: BLOCK 6
04000 DCII: BLOCK 6
04100 CI: BLOCK 6
04200 CII: BLOCK 6
04300 NC: BLOCK =12
04400 IFN DEB,<DACERR: 0>
04500 REFTR: 0
04600 IFN DEB,<
04700 ETIM: 0
04800 ACSAV: BLOCK 20
04900 >
05000 PDL: DHO
05100 BLOCK PDLL
05200 LTIME: 0
05300 FUNCT: 0
05400 ROT6: 0
05500 TRAJER: 0
05600 DOING: 0
05700 DATMSD: 0
05800 CBUFS: 0
05900 SNUM: POINT 12,DACVAL,23
06000 SBMSK: 400040004000
06100 DMASK: 400000
06200 100000
06300 20000
06400 4000
06500 1000
06600 200
06700 BMASK: XWD 400000,200000
06800 XWD 200000, 40000
06900 XWD 100000, 10000
07000 XWD 40000, 2000
07100 XWD 20000, 400
07200 XWD 10000, 100
07300 GMASK: 200000
07400 40000
07500 10000
07600 2000
07700 400
07800 100
07900 BLOCK 12
08000 WAITIN: XWD 3,0
08100 JUMPBK: XWD JMPABS,0
08200 STKPTR: 0
08300 ERRSTK: 0
08400 BITSAV: 0
08500 COUNT: 0
08600 STWT: 0
08700 HCNT: 0
08800 TP: BLOCK 6
08900 TJ: BLOCK 6
09000 LOOP: BLOCK 10
09100 TN: BLOCK 6
09200 SC: BLOCK 6
09300 A0: BLOCK 6
09400 A1: BLOCK 6
09500 A2: BLOCK 6
09600 A3: BLOCK 6
09700 A4: BLOCK 6
09800 BLOCKS: 0
09900 NXTBUF: 0
10000 BUF: BLOCK 1001
10100 BUF2: BLOCK 1001
10200 IFN ADJUST<
10300 ADJI: -1
10400 ADJE: 0
10500 ADJV: 0
10600 ADJIF: 0
10700 FACTOR: BLOCK 3
10800 >
10900 IFN REPORT+TRACK,<
11000 DATIWD: 0
11100 0
11200 DATPT: 0
11300 DATO: BLOCK DBL+100
11400 >
11500 IFN DYNAMICS,<
11600 DDAT: <SIXBIT/FORD/>+6
11700 FOR: BLOCK 6
11800 <SIXBIT/BACK/>+6
11900 BAK: BLOCK 6
12000 >